package persistence.offre;

import static javax.persistence.GenerationType.IDENTITY;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import persistence.produitcatalogue.configuration.*;
import persistence.utilisateur.Fournisseur;

@Entity
@Table(name = "OFFRE_PRODUIT" )
public class OffreDeProduit implements Serializable {
	
	private int id;
	
	private String libelle;
	
	private double prix;
	
	private int qte;
	
	private Date date;
	
	private String RAM;
	
	private String poids;
	
	private int validation;
	
	private Accessoire accessoire;
	
	private Couleur couleur;
	
	private Marque marque;
	
	private Stockage stockage;
	
	private SystemeExploitation systemeExploitation;
	
	private Taille taille;
	
	private Fournisseur fournisseur;

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name="OFFRE_PRODUIT_ID")
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(name="LIBELLE", length=10, nullable=false)
	public String getLibelle() {
		return libelle;
	}

	public void setLibelle(String libelle) {
		this.libelle = libelle;
	}

	@Column(name="PRIX", nullable=false)
	public double getPrix() {
		return prix;
	}

	public void setPrix(double prix) {
		this.prix = prix;
	}

	@Column(name="QTE", nullable=false)
	public int getQte() {
		return qte;
	}

	public void setQte(int qte) {
		this.qte = qte;
	}

	@Column(name="DATE", nullable=false)
	@Temporal(value=TemporalType.DATE)
	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	@Column(name="RAM", length=20, nullable=false)
	public String getRAM() {
		return RAM;
	}

	public void setRAM(String rAM) {
		RAM = rAM;
	}

	@Column(name="POIDS", length=20, nullable=false)
	public String getPoids() {
		return poids;
	}

	public void setPoids(String poids) {
		this.poids = poids;
	}

	@Column(name="VALIDATION", nullable=false)
	public int getValidation() {
		return validation;
	}

	public void setValidation(int validation) {
		this.validation = validation;
	}
	
	@OneToOne
	@JoinColumn(name="ACCESSOIRE_ID")
	public Accessoire getAccessoire() {
		return accessoire;
	}

	public void setAccessoire(Accessoire accessoire) {
		this.accessoire = accessoire;
	}

	@OneToOne
	@JoinColumn(name="COULEUR_ID")
	public Couleur getCouleur() {
		return couleur;
	}

	public void setCouleur(Couleur couleur) {
		this.couleur = couleur;
	}

	@OneToOne
	@JoinColumn(name="MARQUE_ID")
	public Marque getMarque() {
		return marque;
	}

	public void setMarque(Marque marque) {
		this.marque = marque;
	}

	@OneToOne
	@JoinColumn(name="STOCKAGE_ID")
	public Stockage getStockage() {
		return stockage;
	}

	public void setStockage(Stockage stockage) {
		this.stockage = stockage;
	}

	@OneToOne
	@JoinColumn(name="SYSTEME_EXPLOITATION_ID")
	public SystemeExploitation getSystemeExploitation() {
		return systemeExploitation;
	}

	public void setSystemeExploitation(SystemeExploitation systemeExploitation) {
		this.systemeExploitation = systemeExploitation;
	}

	@OneToOne
	@JoinColumn(name="TAILLE_ID")
	public Taille getTaille() {
		return taille;
	}

	public void setTaille(Taille taille) {
		this.taille = taille;
	}

	@OneToOne
	@JoinColumn(name="FK_FOURNISSEUR")
	public Fournisseur getFournisseur() 
	{
	return fournisseur;
	}

	public void setFournisseur(Fournisseur fournisseur) {
		this.fournisseur = fournisseur;
	}

	// CONSTRUCTEUR
	public OffreDeProduit()
	{
	}
}
